package cn.iocoder.yudao.module.promotion.service.prizedraw;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.promotion.controller.admin.prizedraw.vo.PrizeDrawNumberMemberPageReqVO;
import cn.iocoder.yudao.module.promotion.controller.admin.prizedraw.vo.PrizeDrawNumberMemberRespVO;
import cn.iocoder.yudao.module.promotion.controller.admin.prizedraw.vo.PrizeDrawReduceNumberRespVO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.prizedraw.PrizeDrawNumberMemberDO;


public interface PrizeDrawNumberMemberService {


    /**
     * 分页查询
     *
     * @param dto       查询条件
     * @return 分页结果
     */
    PageResult<PrizeDrawNumberMemberRespVO> paging(PrizeDrawNumberMemberPageReqVO dto);

    /**
     * 导出
     *
     * @param dto 查询条件
     */
    void export(PrizeDrawNumberMemberPageReqVO dto);


    /**
     * 获取次数
     *
     * @param userId 会员id
     * @return 次数
     */
    Integer getNumber(Long userId);

    /**
     *
     * @param userId
     * @return
     */
    PrizeDrawNumberMemberDO getByMemberId(Long userId);

    /**
     * 缓存扣减次数
     *
     * @param userId 会员id
     * @param number   次数
     */
    void optionNumber(Long userId, Integer number);

    /**
     * 减少抽奖次数
     *
     * @param numberRespVO
     */
    void reduceNumber(PrizeDrawReduceNumberRespVO numberRespVO);
}